﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using MJM.CBD.Conn;
using MJM.SPP.EntidadesNegocio;

namespace MJM.SPP.AccesoDatos
{
    public class ParametroAD
    {
        public ParametroEN Obtener(int ID)
        {
            ParametroEN objParametroEN = new ParametroEN();
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_T_WEB_PARURL_Obtener", conn);
            cmd.CommandType=CommandType.StoredProcedure;
            SqlParameter prm;
            SqlDataReader dr;
            try
            {
                prm = cmd.CreateParameter();
                prm.ParameterName = "@vPARURL_P_inID";
                prm.SqlDbType = SqlDbType.Int;
                prm.Value = ID;
                cmd.Parameters.Add(prm);

                cmd.Connection.Open();
                dr = cmd.ExecuteReader();

                if (dr.Read())
                {
                    objParametroEN.ID = dr.GetInt32(0);
                    objParametroEN.NombreParam = dr.GetString(1);
                    objParametroEN.Descripcion = dr.GetString(2);
                    objParametroEN.Eliminado = dr.GetInt32(3);
                }

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }

            return objParametroEN;
        }

        public int ActualizarNombre(ParametroEN obj)
        {
            int codigo = 0;
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_u_T_WEB_PARURL_ActualizarNom", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmNombre, prmID, prmDescripcion;
            try
            {
                prmID = cmd.CreateParameter();
                prmID.ParameterName = "@vPARURL_P_inID";
                prmID.SqlDbType = SqlDbType.Int;
                prmID.Value = obj.ID;
                cmd.Parameters.Add(prmID);

                prmNombre = cmd.CreateParameter();
                prmNombre.ParameterName = "@vPARURL_chNOMPAR";
                prmNombre.SqlDbType = SqlDbType.VarChar;
                prmNombre.Value = obj.NombreParam;
                cmd.Parameters.Add(prmNombre);

                prmDescripcion = cmd.CreateParameter();
                prmDescripcion.ParameterName = "@vPARURL_chDESPAR";
                prmDescripcion.SqlDbType = SqlDbType.VarChar;
                prmDescripcion.Value = obj.Descripcion;
                cmd.Parameters.Add(prmDescripcion);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
                codigo = 1;
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }
            return codigo;
        }

        public List<ParametroEN> Listar()
        {
            List<ParametroEN> lst = new List<ParametroEN>();

            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_T_WEB_PARURL_Listar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prm;
            SqlDataReader dr;
            try
            {
                cmd.Connection.Open();
                dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    ParametroEN objParametroEN = new ParametroEN();
                    objParametroEN.ID = dr.GetInt32(0);
                    objParametroEN.NombreParam = dr.GetString(1);
                    objParametroEN.Descripcion = dr.GetString(2);
                    objParametroEN.Eliminado = dr.GetInt32(3);
                    lst.Add(objParametroEN);
                }

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }

            return lst;
        }

        public int Insertar(ParametroEN obj)
        {
            ParametroEN objParametroEN = new ParametroEN();
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_i_T_WEB_PARURL_Insertar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmNombre,prmDescripcion,prmcodigo;
            int codigo=0;
            try
            {
                prmcodigo = cmd.CreateParameter();
                prmcodigo.SqlDbType = SqlDbType.Int;
                prmcodigo.Direction = ParameterDirection.ReturnValue;
                cmd.Parameters.Add(prmcodigo);

                prmDescripcion = cmd.CreateParameter();
                prmDescripcion.ParameterName = "@vPARURL_chDESPAR";
                prmDescripcion.SqlDbType = SqlDbType.VarChar;
                prmDescripcion.Value = obj.Descripcion;
                cmd.Parameters.Add(prmDescripcion);

                prmNombre = cmd.CreateParameter();
                prmNombre.ParameterName = "@vPARURL_chNOMPAR";
                prmNombre.SqlDbType = SqlDbType.VarChar;
                prmNombre.Value = obj.NombreParam;
                cmd.Parameters.Add(prmNombre);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                codigo = Convert.ToInt32(prmcodigo.Value);
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
                return 0;
            }

            return codigo;
        }

        public int Eliminar(int id)
        {
            int codigo = 0;
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_u_T_WEB_PARURL_Eliminar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmID;
            try
            {
                prmID = cmd.CreateParameter();
                prmID.ParameterName = "@vPARURL_P_inID";
                prmID.SqlDbType = SqlDbType.Int;
                prmID.Value = id;
                cmd.Parameters.Add(prmID);
                cmd.Connection.Open();
                cmd.ExecuteNonQuery();

                codigo = 1;
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                codigo = 0;
                cmd.Dispose();
                conn.Dispose();
            }

            return codigo;
        }
    }
}
